package com.ruoyi.project.modules.processBranch.service;

import java.util.List;

import com.ruoyi.project.modules.interfaceinfo.domain.VirtualUsage;
import com.ruoyi.project.modules.processBranch.domain.ProcessBranch;
import com.ruoyi.project.modules.processBranch.vo.ParamObject;

/**
 * 流程分支Service接口
 * 
 * @author smallrain
 * @date 2022-04-02
 */
public interface IProcessBranchService 
{
    /**
     * 查询流程分支
     * 
     * @param processBranchId 流程分支主键
     * @return 流程分支
     */
    public ProcessBranch selectProcessBranchByProcessBranchId(Long processBranchId);

    /**
     * 查询流程分支列表
     * 
     * @param processBranch 流程分支
     * @return 流程分支集合
     */
    public List<ProcessBranch> selectProcessBranchList(ProcessBranch processBranch);

    /**
     * 新增流程分支
     * 
     * @param processBranch 流程分支
     * @return 结果
     */
    public int insertProcessBranch(ProcessBranch processBranch);

    /**
     * 修改流程分支
     * 
     * @param processBranch 流程分支
     * @return 结果
     */
    public int updateProcessBranch(ProcessBranch processBranch);

    /**
     * 批量删除流程分支
     * 
     * @param processBranchIds 需要删除的流程分支主键集合
     * @return 结果
     */
    public int deleteProcessBranchByProcessBranchIds(String processBranchIds);

    /**
     * 删除流程分支信息
     * 
     * @param processBranchId 流程分支主键
     * @return 结果
     */
    public int deleteProcessBranchByProcessBranchId(Long processBranchId);

    void saveOrUpdateVirtualUsage(ProcessBranch processBranch);

    void saveOrUpdateCondition(ProcessBranch processBranch);

    List<VirtualUsage> selectVirtualUsageIdsByProcessBranch(ProcessBranch processBranch);

    List<ParamObject> paramObjectList(String interfaceType, List<Long> interfaceIds, String isInParam, String objectType);

    List<ParamObject> queryParamFieldList(Long id);

    List<ProcessBranch> selectProcessBranchListByInterfaceId(Long interfaceId);

    void saveEnd(ProcessBranch processBranch);

    int delete(Long processBranchId);

    void saveExceptionEnd(ProcessBranch processBranch);

    List<VirtualUsage> selectVirtualUsageIdsByLevel(long level, Long interfaceId);

    void saveBreakEnd(ProcessBranch processBranch);

    void saveContinueEnd(ProcessBranch processBranch);
}
